from PyPDF2 import PdfFileWriter,PdfFileReader
import os

def batchConvert(pdfDirPath,outputPath):
    fileList = os.listdir(pdfDirPath) # 获取文件夹下的所有文件列表
    # 批量转换
    for filename in fileList:
        with open(pdfDirPath + "\\" + filename,'rb') as pdf_obj:
            pdf_reader=PdfFileReader(pdf_obj)   # 读取要加密的文件
            pdf_writer=PdfFileWriter()         
            # 将每一页的数据写入一个 pdf_writer 对象中
            for page_num in range(pdf_reader.numPages): 
                page_obj=pdf_reader.getPage(page_num)
                pdf_writer.addPage(page_obj)
            pdf_writer.encrypt('123') # 加密,将密码设为'123'
            lastIndex = filename.rfind('.')  # 获取后缀名的位置
            secretFile = filename[:lastIndex] + "_sec.pdf" # 生成加密的pdf文件名
            # 保存加密文件并以二进制的方式写入，将保留源PDF中的所有信息
            pdf_output_file=open(outputPath + "\\" +secretFile,'wb') # outputPath + "\\" +secretFile 为加密文件的保存路径
            pdf_writer.write(pdf_output_file)
            pdf_output_file.close()


pdfDirPath = 'D:\\python_practice_pdf' # 待加密的PDF文件夹
outputPath = 'D:\\python_pdf_secret' # 加密后的输出文件夹

batchConvert(pdfDirPath,outputPath)